import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
// 自动配置
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
// Element Plus
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// UnoCSS
import UnoCSS from 'unocss/vite'
// VueUse
import {
  VueUseComponentsResolver,
  VueUseDirectiveResolver,
} from 'unplugin-vue-components/resolvers'
// https://vite.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    vueJsx(),
    // UnoCSS
    UnoCSS(),
    // 自动导入 UI 库，页面直接使用
    AutoImport({
      resolvers: [ElementPlusResolver()],
      imports: ['vue', 'vue-router'], // 导入vue和vue-router
      dts: 'types/auto-imports.d.ts', // 生成自动导入类型声明文件
      dirs: [''], // 自动导入的方法等
      vueTemplate: true,
    }),
    // 自动注册组件，页面直接使用
    Components({
      dirs: ['src/components/'], // 扫描的文件夹
      dts: 'types/components.d.ts', // 生成自动注册类型声明文件
      include: [/\.vue$/, /\.vue\?vue/, /\.md$/], // 匹配文件
      resolvers: [
        ElementPlusResolver(), // 自动导入 Element Plus
        VueUseComponentsResolver(), // 自动导入 VueUse
        VueUseDirectiveResolver(), // 自动导入 VueUse 的指令
      ], // 配置组件库的解析器
    }),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url)),
    },
  },
})
